/*****************************************************************************/
/*                                                                           */
/*    Domino Operation System Driver Module                                  */
/*                                                                           */
/*    Copyright (C) 2007 Laszlo Arvai                                        */
/*                                                                           */
/*    ------------------------------------------------------------------     */
/*    drvSPI - SPI Driver for AVR series                                     */
/*****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
// Includes
#include <drvSPI.h>
#include "drvIOConfig.h"

///////////////////////////////////////////////////////////////////////////////
// Initialize SPI driver
void drvSPIInit(void)
{
	// set pin direction
	InitSCK();
	InitMOSI();
	InitMISO();

	// set master mode clk/2
	SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPR0) | _BV(SPR1);
	SPSR = 0;
}

///////////////////////////////////////////////////////////////////////////////
// Send and receive one byte over SPI interface
dosByte drvSPISendAndReceiveByte( dosByte in_byte )
{
	// send data byte
	SPDR = in_byte;

	// Wait for communication to be done
	while( !( SPSR & (1<<SPIF) ) );

	return SPDR;
}
